"""
编写一个装饰器，用于记录函数的调用日志，包括调用函数名、时间和参数，调用结束后输出调用函数名和时间
"""
import logging
import time

# 配置日志记录器
logging.basicConfig(
    level=logging.INFO,  # 设置日志级别
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',  # 设置日志格式
    handlers=[
        logging.FileHandler("app.log"),  # 将日志写入文件
        logging.StreamHandler()  # 在控制台输出日志
    ]
)

logger = logging.getLogger(__name__)


def dec_demo(func):
    def inner(*args, **kwargs):
        start_time = time.time()
        logger.info(f"调用函数名:'{func.__name__}' ,参数: {args} 和 {kwargs},调用时间:{start_time}")
        res = func(*args, **kwargs)
        end_time = time.time()
        logger.info(f"调用函数名:'{func.__name__}' ,结束时间:{end_time}")
        return res
    return inner


@dec_demo
def show(n, msg):
    for i in range(n):
        print(f'第{i + 1}次输出{msg}')


print(show(1, msg='hello world'))


